/*
 * Copyright (c) 2008-2017 浩瀚深度 All Rights Reserved.
 *
 * FileName: JsonMsgResponseCode.java
 *
 * Description：
 *
 * History:
 * v1.0.0, zmw, 2017年8月10日, Create
 */
package com.monitor.utils;

/**
 * 应答码
 * @author zmw
 * @version 1.0.0
 * @since 1.0.0
 *
 */
public enum JsonMsgResponseCode
{
    /**
     * 应答结果
     */
    CODE_REQUEST_CMDILLEGAL("请求命令不合法/不支持", 1),
    /**
     * 应答结果
     */
    CODE_REQUEST_TYPEILLEGAL("请求类型不合法/不支持", 2),
    /**
     * 应答结果
     */
    CODE_REQUEST_OPERTYPEILLEGAL("操作类型不合法/不支持", 3),
    /**
     * 应答结果
     */
    CODE_SERVER_COMVERERROR("通信协议版本不支持", 100),
    /**
     * 应答结果
     */
    CODE_SERVER_OUTOFMEM("程序内存不足", 101),
    /**
     * 应答结果
     */
    CODE_SERVER_ERROR("程序异常", 102),
    /**
     * 应答结果
     */
    CODE_SUCCEED("处理成功", 200),
    /**
     * 应答结果
     */
    CODE_SUCCEED_DOING("正在处理中", 201),
    /**
     * 应答结果
     */
    CODE_SUCCEED_CMD("命令接收成功", 202),
    /**
     * 应答结果
     */
    CODE_SUCCEED_REMAIN_CMD("命令接收成,但还有后续数据", 203),
    /**
     * 应答结果
     */
    CODE_UNKNOWN("未知应答", 999);
    /**
     * 应答结果中文名称
     */
    private String codeName;
    /**
     * 应答结果编码
     */
    private Integer code;

    /**
     * @param codeName 应答结果中文名称
     * @param code  应答结果编码
     */
    private JsonMsgResponseCode(String codeName, Integer code)
    {
        this.codeName = codeName;
        this.code = code;
    }

    /**
     * @return the codeName
     */
    public String getCodeName()
    {
        return codeName;
    }
    /**
     * @return the code
     */
    public Integer getCode()
    {
        return code;
    }
    /**
     * 获取应答码的Code
     * @param code 应答码
     * @return JsonMsgResponseCode
     */
    public static JsonMsgResponseCode obtainEnum(Integer code)
    {
        if (code == null)
        {
            return CODE_UNKNOWN;
        }
        switch (code)
        {
            case 1 : return CODE_REQUEST_CMDILLEGAL;
            case 2 : return CODE_REQUEST_TYPEILLEGAL;
            case 3 : return CODE_REQUEST_OPERTYPEILLEGAL;
            case 100 : return CODE_SERVER_COMVERERROR;
            case 101 : return CODE_SERVER_OUTOFMEM;
            case 102 : return CODE_SERVER_ERROR;
            case 200 : return CODE_SUCCEED;
            case 201 : return CODE_SUCCEED_DOING;
            case 202 : return CODE_SUCCEED_CMD;
            default: return CODE_UNKNOWN;
       
        }
    }
}
